home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Magazin: Amiga-CD 1996 March
/
Amiga-CD 1996 #3.iso
/
pd-disketten
/
dms-gepackt
/
1_96s
/
apd-1-96s-1-2.dms
/
apd-1-96s-1-2.adf
/
Relabel-Trick
/
Relabel.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-12-07
|
2KB
|
74 lines
/* Relabel 1.0 -- © D. Göhler, E. Conrad 1995 */
#include <string.h>
#include <stdlib.h>
#include <clib/exec_protos.h>
#include <clib/alib_protos.h>
#include <clib/dos_protos.h>
#define BUFSIZE 300
/* Maxon C++ 3.0: mcppc3 -pc relabel.c -lamiga
SAS-C 6.x : sc relabel.c LINK
DICE x.x : dcc relabel.c */
int relabel(int init, int count, char *argv[])
{ char buf[BUFSIZE]; int lauf;
strcpy (buf,"C:Relabel ");
for (lauf = init; count--; lauf++)
{ strcat(buf,argv[lauf]); strcat(buf," "); }
return (System(buf,0L) == DOSFALSE
? RETURN_OK : RETURN_FAIL);
}
char C_Array[] = "yaq12wsxcde34rfvbgt56zhnmju78ik,"
".lo90pö-äüßPLOIKMJUZHNBGTRFVCDEW";
ULONG hash(unsigned char *string)
{ ULONG retcode = strlen(string);
while (*string)
{ retcode = (retcode * 29 + *string++) & 0xfffff; }
return retcode;
}
void CalculateNew(char *oldpass, char *codename)
{
unsigned int oldhash = hash(oldpass);
unsigned int codehash = hash(codename);
unsigned int index,i=0;
char newpass[10];
srand(codehash);
while (i < 8)
{ index = (rand()*(oldhash+i) >> 3) % 64;
newpass[i++] = C_Array[index];
}
newpass[8] = '\0';
Printf("%s\n",newpass);
}
void StripLF(char *name)
{ char *p = name + strlen(name) - 1;
if (*p == '\n') *p = '\0';
}
int main(int argc, char *argv[])
{ if (argc > 1) // mit Parametern gestartet ...
{ relabel (1,argc-1,argv); }
else
{ char oldname[BUFSIZE],newname[BUFSIZE];
char *names[3] = {">NIL:",0,0};
names[1] = oldname; names[2] = newname;
Flush(Output()); Flush(Input()); // leider nötig
FPuts(Output(),"Alter Name des Datenträgers: ");
Flush(Output()); FGets(Input(),oldname,BUFSIZE-2);
FPuts(Output(),"Neuer Name des Datenträgers: ");
Flush(Output()); FGets(Input(),newname,BUFSIZE-2);
StripLF(oldname); StripLF(newname);
if (relabel(0,3,names) == RETURN_FAIL)
{ CalculateNew(oldname,newname); }
}
return RETURN_OK;
}